'''
这两个链表是单向链表。如果两个单向链表有公共的节点，那么这两个链表从某一节点开始，
他们的next都指向同一个节点。但由于是单向链表的节点，每个节点只有一个next，
因此从第一个公共节点开始，之后他们的所有节点都是重合的，不可能再出现分叉。
所以两个有公共节点而部分重合的链表，其拓扑形状看起来像一个Y，而不可能像一个X，如下图所示。
'''
class Solution:
    def FindFirstCommonNode(self, pHead1, pHead2):
        # write code here
        p1 = pHead1
        p2 = pHead2
        while p2 != p1 :
            # 将两个链表拼接起来, 如果有相同的节点就会break
            # p1没走完就p1.next p1走完了就pHead2, 然后继续p1(pHead2).next
            # p1的pHead2也走完了?if语句在while里面执行完依次就没了? 题意, 两个链表必有公共节点
            p1 = p1.next if p1 else pHead2
            p2 = p2.next if p2 else pHead1
        return p1